Industrial automation environments utilize machines during the industrial manufacturing process, such as drives, pumps, motors, and robots. These machines typically have various moving parts and other components that are driven by instructions received from industrial controller systems. Machine builders and Solution Providers typically produce the control logic needed to run on these controllers to control the machines. The machine builders and Solution Providers often attempt to restrict access to and usage of the controller logic they produce, both internally and by end users.
In addition to controller logic, other content may be employed or generated during industrial automation operations, such as data sets, drive parameters, cam tables, product formulations, recipes, production data, and human-machine interface (HMI) components. An HMI receives and processes status data from the machines to generate various graphical displays. For example, an HMI graphical display might indicate status metrics of a drive, the pressure of a pump, the speed of a motor, or the output of a robot. The HMI may also provide a mechanism for an operator to send control instructions to an industrial controller system that controls a machine. For example, an operator might use the HMI to direct the control system to update drive parameters, turn on a pump, speed-up a motor, or stop a robot.
Overview
Provided herein are systems, methods, and software to facilitate protecting control programs used in an industrial automation environment. In at least one implementation, control system content provided by a primary entity is received, wherein the control system content comprises controller program code that directs an industrial controller to drive a machine system. A primary security authority provided by the primary entity is also received, wherein the primary security authority defines primary usage rights for the control system content granted to a secondary entity. A secondary security authority provided by the secondary entity is received, wherein the secondary security authority defines secondary usage rights for the control system content that further restrict the primary usage rights granted to the secondary entity by the primary entity in the primary security authority. A request is received from a user associated with the secondary entity to perform an action associated with the control system content. The request is processed with the primary security authority to determine if the secondary entity is authorized to perform the action associated with the control system content based on the primary usage rights. If the secondary entity is not authorized by the primary security authority to perform the action associated with the control system content based on the primary usage rights, then the request to perform the action is denied. However, if the secondary entity is authorized by the primary security authority to perform the action associated with the control system content based on the primary usage rights, then the request is processed with the secondary security authority to determine if the user is authorized to perform the action associated with the control system content based on the secondary usage rights. If the user is authorized by the secondary security authority to perform the action associated with the control system content based on the secondary usage rights, then the request to perform the action is granted. However, if the user is not authorized by the secondary security authority to perform the action associated with the control system content based on the secondary usage rights, then the request to perform the action is denied.
This Overview is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. It should be understood that this Overview is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.